package org.lanqiao.tjut.Dao;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.lanqiao.tjut.Bean.CourseBean;
import org.lanqiao.tjut.Bean.StudentBean;
import org.lanqiao.tjut.Bean.TeacherBean;
import org.lanqiao.tjut.Bean.UsersBean;
import org.lanqiao.tjut.DB.DBDriverFactory;

public class UserInfoManagerDao {

	/**
	 * 保存用户信息
	 * 
	 * @param usersB
	 *            用户信息对象
	 * @return 保存结果的记录行数
	 */
	public int saveUserInfo(UsersBean usersB) {
		int re_i = 0;
		if (usersB.getUserid() == null) {
			// 新增处理
			String strSql = "INSERT INTO EDUUSERS(USERNAME ,USERPSW,USERAGE ,USERSEX ,USERTEL,USERADDRESS) VALUES(?,?,?,?,?,?)";
			// 保存数据
			re_i = DBDriverFactory.getDBDriverInstance().update(strSql,
					new Object[] { usersB.getUsername(), usersB.getUserpsw(), usersB.getUserage(), usersB.getUsersex(),
							usersB.getUsertel(), usersB.getUseraddress() });
		} else {
			// 修改处理
			String strSql = "UPDATE EDUUSERS SET USERNAME = ?,USERPSW = ?,USERAGE = ?,USERSEX = ?,USERTEL = ?,USERADDRESS=? WHERE USERID = ?";
			// 保存数据
			re_i = DBDriverFactory.getDBDriverInstance()
					.update(strSql,
							new Object[] { usersB.getUsername(), usersB.getUserpsw(), usersB.getUserage(),
									usersB.getUsersex(), usersB.getUsertel(), usersB.getUseraddress(),
									usersB.getUserid() });
		}

		return re_i;
	}

	/**
	 * 获取所有的用户信息
	 * 
	 * @return 用户信息集
	 */
	public List<UsersBean> getAllUsersInfo() {
		// 查询数据库的sql语句
		String strSql = "SELECT * FROM EDUUSERS ORDER BY USERID DESC";
		List<UsersBean> lstUsers = DBDriverFactory.getDBDriverInstance().query(strSql,
				new BeanListHandler<UsersBean>(UsersBean.class));
		return lstUsers;
	}

	/**
	 * 通过id主键获取用户信息
	 * 
	 * @param strUid
	 *            id主键
	 * @return 用户信息
	 */
	public UsersBean getUserInfoById(String strUid) {
		// 查询数据
		// 查询数据库的sql语句
		String strSql = "SELECT * FROM EDUUSERS WHERE USERID=?";
		UsersBean UsersB = DBDriverFactory.getDBDriverInstance().query(strSql,
				new BeanHandler<UsersBean>(UsersBean.class), new Object[] { strUid });
		return UsersB;
	}

	/**
	 * 根据条件进行用户信息查询
	 * 
	 * @param usersB
	 *            查询条件
	 * @return 查询结果集
	 */
	public List<UsersBean> doQueryByParas(UsersBean usersB) {
		// 根据条件进行数据查询，没有输入查询条件，则进行全部查询
		StringBuilder sbSql = new StringBuilder("SELECT * FROM EDUUSERS WHERE 1=1 ");
		// 根据查询条件动态拼写查询语句和参数
		List<Object> lstParas = new ArrayList<Object>();
		if (usersB.getUsername() != null && !usersB.getUsername().trim().equals("")) {
			// 姓名查询
			sbSql.append(" AND USERNAME LIKE ? ");
			// 添加参数
			lstParas.add("%%" + usersB.getUsername() + "%%");
		}
		if (usersB.getUsersex() != null && !usersB.getUsersex().trim().equals("")) {
			// 姓名查询
			sbSql.append(" AND USERSEX = ? ");
			// 添加参数
			lstParas.add(usersB.getUsersex());
		}
		if (usersB.getUserage() > 0) {
			// 姓名查询
			sbSql.append(" AND USERAGE >= ? ");
			// 添加参数
			lstParas.add(usersB.getUserage());
		}
		if (usersB.getUserage2() > 0) {
			// 姓名查询
			sbSql.append(" AND USERAGE <= ? ");
			// 添加参数
			lstParas.add(usersB.getUserage2());
		}
		/*
		 * if (usersB.getUsername() != null &&
		 * !usersB.getUsername().trim().equals("")) { // 姓名查询 sbSql.append(
		 * " AND USERNAME LIKE ? "); // 添加参数 lstParas.add("%%" +
		 * usersB.getUsername() + "%%"); }
		 */
		// 进行排序
		sbSql.append("  ORDER BY USERID ");
		// 进行查询操作
		List<UsersBean> lstUsers = DBDriverFactory.getDBDriverInstance().query(sbSql.toString(),
				new BeanListHandler<UsersBean>(UsersBean.class), lstParas.toArray());
		return lstUsers;

	}

	/**
	 * 删除指定的用户信息
	 * 
	 * @param userId
	 *            删除条件（指定用户id）
	 * @return 删除结果集
	 */
	public int deleteUserById(int userId) {
		int re_i = 0;
		// 要执行的sql语句
		String strSql = "DELETE FROM EDUUSERS WHERE USERID=?";
		// 删除数据
		re_i = DBDriverFactory.getDBDriverInstance().update(strSql, new Object[] { userId });
		return re_i;
	}

	

	

	/**
	 * 根据教师ID获取课程信息
	 * 
	 * @param teaId
	 *            教师ID
	 * @return 课程信息
	 */
	public List<CourseBean> getCourseInfoByTeaId(int teaId) {
		// 查询数据库的sql语句
		String strSql = "SELECT * FROM EDUTEA WHERE TEAID=?";
		List<CourseBean> couB = DBDriverFactory.getDBDriverInstance().query(strSql,
				new BeanListHandler<CourseBean>(CourseBean.class), new Object[] { teaId });
		return couB;
	}

	/**
	 * 获取所有课程信息
	 * 
	 * @return 课程信息
	 */
	public List<CourseBean> getAllCouInfo() {
		// 查询数据库的sql语句
		String strSql = "SELECT * FROM EDUCOU ORDER BY COUID DESC";
		List<CourseBean> lstCou = DBDriverFactory.getDBDriverInstance().query(strSql,
				new BeanListHandler<CourseBean>(CourseBean.class));
		return lstCou;
	}

	/**
	 * 根据课程ID获取课程信息
	 * 
	 * @param strUid
	 *            课程ID
	 * @return 课程信息
	 */
	public CourseBean getCouInfoById(String strUid) {
		// 查询Sql语句
		String strSql = "SELECT * FROM EDUCOU WHERE COUID = ?";
		CourseBean couB = DBDriverFactory.getDBDriverInstance().query(strSql,
				new BeanHandler<CourseBean>(CourseBean.class), new Object[] { strUid });
		return couB;
	}

	/**
	 * 删除指定课程信息
	 * 
	 * @param couid
	 *            指定课程ID
	 * @return 删除结果
	 */
	public int deleteCouById(int couid) {
		int re_i = 0;
		// 要执行的sql语句
		String strSql = "DELETE FROM EDUCOU WHERE COUID=?";
		// 删除数据
		re_i = DBDriverFactory.getDBDriverInstance().update(strSql, new Object[] { couid });
		return re_i;
	}

	/**
	 * 获取所有课程信息
	 * 
	 * @param couB
	 *            课程实例对象
	 * @return 查询结果集
	 */
	public List<CourseBean> doQueryByParas(CourseBean couB) {
		// 根据条件进行数据查询，没有输入查询条件，则进行全部查询
		StringBuilder sbSql = new StringBuilder("SELECT * FROM EDUCOU WHERE 1=1 ");
		// 根据查询条件动态拼写查询语句和参数
		List<Object> lstParas = new ArrayList<Object>();
		if (couB.getCouname() != null && !couB.getCouname().trim().equals("")) {
			// 姓名查询
			sbSql.append(" AND COUNAME LIKE ? ");
			// 添加参数
			lstParas.add("%%" + couB.getCouname() + "%%");
		}
		// 进行排序
		sbSql.append("  ORDER BY COUID ");
		// 进行查询操作
		List<CourseBean> lstCou = DBDriverFactory.getDBDriverInstance().query(sbSql.toString(),
				new BeanListHandler<CourseBean>(CourseBean.class), lstParas.toArray());
		return lstCou;
	}

	/**
	 * 新增课程信息
	 * 
	 * @param courseB
	 *            课程实例对象
	 * @return 新增结果
	 */
	public int saveCouInfo(CourseBean courseB) {
		int re_i = 0;
		if (courseB.getCouid() == null) {
			// 新增处理
			String strSql = "INSERT INTO EDUCOU(COUNAME) VALUES(?)";
			// 保存数据
			re_i = DBDriverFactory.getDBDriverInstance().update(strSql, new Object[] { courseB.getCouname() });
		} else {
			// 修改处理
			String strSql = "UPDATE EDUCOU SET COUNAME = ? WHERE COUID = ?";
			// 保存数据
			re_i = DBDriverFactory.getDBDriverInstance().update(strSql,
					new Object[] { courseB.getCouname(), courseB.getCouid() });
		}

		return re_i;
	}
	
	
	/**
	 * 学生信息保存
	 * 
	 * @param stuB
	 *            学生实体对象
	 * @return 保存结果
	 */
	public int saveStuInfo(StudentBean stuB) {
		int re_i = 0;
		if (stuB.getStuid() == null) {
			// 新增处理
			String strSql = "INSERT INTO EDUSTU(STUNAME ,STUPSW,STUAGE ,STUSEX ,STUTEL,STUADDRESS) VALUES(?,?,?,?,?,?)";
			// 保存数据
			re_i = DBDriverFactory.getDBDriverInstance().update(strSql, new Object[] { stuB.getStuname(),
					stuB.getStupsw(), stuB.getStuage(), stuB.getStusex(), stuB.getStutel(), stuB.getStuaddress() });
		} else {
			// 修改处理
			String strSql = "UPDATE EDUSTU SET STUNAME = ?,STUPSW = ?,STUAGE = ?,STUSEX = ?,STUTEL = ?,STUADDRESS=? WHERE STUID = ?";
			// 保存数据
			re_i = DBDriverFactory.getDBDriverInstance().update(strSql,
					new Object[] { stuB.getStuname(), stuB.getStupsw(), stuB.getStuage(), stuB.getStusex(),
							stuB.getStutel(), stuB.getStuaddress(), stuB.getStuid() });
		}

		return re_i;
	}

	/**
	 * 获取所有学生信息
	 * 
	 * @return 学生信息结果集
	 */
	public List<StudentBean> getAllStuInfo() {
		// 查询数据库的sql语句
		String strSql = "SELECT * FROM EDUSTU ORDER BY STUID DESC";
		List<StudentBean> lstStu = DBDriverFactory.getDBDriverInstance().query(strSql,
				new BeanListHandler<StudentBean>(StudentBean.class));
		return lstStu;
	}

	/**
	 * 获取指定学生信息
	 * 
	 * @param strUid
	 *            指定学生ID
	 * @return 学生信息
	 */
	public StudentBean getStuInfoById(String strUid) {
		// 查询数据
		// 查询数据库的sql语句
		String strSql = "SELECT * FROM EDUSTU WHERE STUID=?";
		StudentBean stuB = DBDriverFactory.getDBDriverInstance().query(strSql,
				new BeanHandler<StudentBean>(StudentBean.class), new Object[] { strUid });
		return stuB;
	}

	/**
	 * 根据查询条件查询学生信息
	 * 
	 * @param stuB
	 *            学生实体对象
	 * @return 查询结果集
	 */
	public List<StudentBean> doQueryByParas(StudentBean stuB) {
		// 根据条件进行数据查询，没有输入查询条件，则进行全部查询
		StringBuilder sbSql = new StringBuilder("SELECT * FROM EDUSTU WHERE 1=1 ");
		// 根据查询条件动态拼写查询语句和参数
		List<Object> lstParas = new ArrayList<Object>();
		if (stuB.getStuname() != null && !stuB.getStuname().trim().equals("")) {
			// 姓名查询
			sbSql.append(" AND STUNAME LIKE ? ");
			// 添加参数
			lstParas.add("%%" + stuB.getStuname() + "%%");
		}
		if (stuB.getStusex() != null && !stuB.getStusex().trim().equals("")) {
			// 姓名查询
			sbSql.append(" AND STUSEX = ? ");
			// 添加参数
			lstParas.add(stuB.getStusex());
		}
		if (stuB.getStuage() > 0) {
			// 姓名查询
			sbSql.append(" AND STUAGE >= ? ");
			// 添加参数
			lstParas.add(stuB.getStuage());
		}
		if (stuB.getStuage2() > 0) {
			// 姓名查询
			sbSql.append(" AND STUAGE <= ? ");
			// 添加参数
			lstParas.add(stuB.getStuage2());
		}

		// 进行排序
		sbSql.append("  ORDER BY STUID ");
		// 进行查询操作
		List<StudentBean> lstStu = DBDriverFactory.getDBDriverInstance().query(sbSql.toString(),
				new BeanListHandler<StudentBean>(StudentBean.class), lstParas.toArray());
		return lstStu;
	}

	/**
	 * 删除指定学生信息
	 * 
	 * @param userId
	 *            指定学生ID
	 * @return 删除结果
	 */
	public int deleteStuById(int stuId) {
		int re_i = 0;
		// 要执行的sql语句
		String strSql = "DELETE FROM EDUSTU WHERE STUID=?";
		// 删除数据
		re_i = DBDriverFactory.getDBDriverInstance().update(strSql, new Object[] { stuId });
		return re_i;
	}

}
